﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CapaPresentacion.Commands;
using CapaPresentacion.Vistas;
using Entidades;
using CapaLogica;
using System.Windows.Input;
using System.Windows;
using System.Windows.Data;
using System.Transactions;

namespace CapaPresentacion.Vistas
{
    class VentanaBusquedaPagoInscripcionesViewModel
    {

        private RelayCommand buscarInscripcionAlumnoCommand;
        private RelayCommand eliminarPagoInscripcionAlumnoCommand;

        public event EditarEntidad EditarEntidad;
        private string año;
        private Guid idSeleccionado;


        public string Año
        {
            get { return año; }
            set { año = value; }

        }




        public ICommand BuscarInscripcionAlumnoCommand
        {
            get
            {
                return buscarInscripcionAlumnoCommand;
            }
        }

        public ICommand EliminarPagoInscripcionAlumnoCommand
        {
            get
            {
                return eliminarPagoInscripcionAlumnoCommand;
            }
        }



         public List<ViewEntity> ListaAlumnos { get; set; }

        public Guid IdSeleccionado
        {
            get { return idSeleccionado; }
            set { idSeleccionado = value; }

        }

        private VentanaBusquedaPagoInscripciones view;

        public VentanaBusquedaPagoInscripcionesViewModel() { }

        public VentanaBusquedaPagoInscripcionesViewModel(VentanaBusquedaPagoInscripciones vista)
        {

            this.view = vista;


            this.buscarInscripcionAlumnoCommand = new RelayCommand(BuscarInscripcionesAlumnos);
            this.eliminarPagoInscripcionAlumnoCommand = new RelayCommand(EliminarInscripcionAlumno);

            this.año = DateTime.Now.Year.ToString();

        }


        public void BuscarInscripcionesAlumnos(object parameter)
        {
            if (Validaciones())
            {
                ListaAlumnos = new PagarInscripcionLogica().ObtenerInscripcionesPagasPorAño(Convert.ToInt32(this.año));

                if (ListaAlumnos != null && ListaAlumnos.Count > 0)
                {
                    this.view.listaDatos.ItemsSource = ListaAlumnos;
                    this.view.panelResultados.Visibility = Visibility.Visible;
                    this.view.lblNoRecords.Visibility = Visibility.Collapsed;
                }
                else
                {
                    this.view.panelResultados.Visibility = Visibility.Collapsed;
                    this.view.lblNoRecords.Visibility = Visibility.Visible;
                    this.view.lblNoSelected.Visibility = Visibility.Collapsed;

                }
            }


        }


        public void EliminarInscripcionAlumno(object Parameter)
        {

            if (this.idSeleccionado != Guid.Empty)
            {
                if (MessageBox.Show("¿Está seguro que desea eliminar el pago de la inscripción del alumno seleccionado?", "Confirme su Decisión", MessageBoxButton.YesNo, MessageBoxImage.Warning) == MessageBoxResult.Yes)
                {
                    this.view.lblNoSelected.Visibility = Visibility.Collapsed;

                    PagoInscripcion entidad = new PagarInscripcionLogica().ObtenerEntidadParaEditar(idSeleccionado, Convert.ToInt32(this.año));

                    entidad.Eliminada = true;
                    new PagarInscripcionLogica().Modificar(entidad);

                    VentanaAviso nueva = new VentanaAviso(false, "Finalización exitosa", "El pago de la inscripción del alumno seleccionado ha sido eliminado");
                    nueva.ShowDialog();
                    this.view.Close();

                }

            }
            else
            {
                this.view.lblNoSelected.Visibility = Visibility.Visible;
            }

        }

        internal bool Validaciones()
        {

            if (this.año.Length != 4)
            {
                VentanaAviso nueva = new VentanaAviso(true, "Se ha producido un error", "El campo 'Año' ha sido ingresado de forma incorrecta");
                this.view.panelResultados.Visibility = Visibility.Collapsed;
                this.view.lblNoRecords.Visibility = Visibility.Collapsed;
                nueva.ShowDialog();
                return false;

            }
                        

            return true;
        }



    }
}
